package com.cskaoyan.javase.oop1._6constructor._0this;

/**
 * 构造器中的this关键字,有两个作用:
 *      1.构造器中的this关键字可以起到和成员方法中的this一模一样的效果
 *          指向当前对象
 *          所以构造器中,也是可以无条件访问自身类中的成员变量/方法.
 *
 *      2.在构造器中,this有特殊的用途,它可以用来表示调用自身类中的其它构造器
 *          语法:
 *          this(实参列表)
 *          根据实参列表的不同,表示调用不同构造器,这是方法重载.
 *
 * 注意事项:
 *      this在表示调用自身类其它构造器时,必须处在构造器代码的第一行
 *      所以一个构造器中,this表示调用构造器,最多只有一个,不可能有两个
 *
 * @since 10:03
 * @author wuguidong@cskaoyan.onaliyun.com
 */
public class Demo {
    public static void main(String[] args) {
        Dog d = new Dog(3, "旺财");
        System.out.println(d.age);
        System.out.println(d.name);
    }
}

class Dog {
    int age;
    String name;
    double price;
    String breed;

    public Dog() {
        System.out.println(name);
        System.out.println(this.age);
    }

    public Dog(String name) {
        this.name = name;
    }

    public Dog(int age, String name) {
        this.age = age;
        // Call to 'this()' must be first statement in constructor body
        // this(name);
        // this.name = name;
    }

    public Dog(int age, String name, double price, String breed) {
        this(age, name);
        this.price = price;
        this.breed = breed;
    }
}